import csv
from io import StringIO

import numpy as np
import pandas as pd
import cv2
import pyautogui
from pytesseract import image_to_string,image_to_data,image_to_osd,image_to_boxes
# from prt_sc import thresh as img

# -psm 11稀疏文本。在没有特定顺序的情况下，尽可能多地查找文本。
tessdata_dir_config = '--tessdata-dir "c:\\Program Files\\Tesseract-OCR\\tessdata" --psm 11'



img = pyautogui.screenshot() # 屏幕截图
img = cv2.cvtColor(np.asarray(img),cv2.COLOR_RGB2BGR) # 转为opencv图像数据
img = cv2.imread("1.jpg")
ret, img = cv2.threshold(img, 125, 255, cv2.THRESH_BINARY)  # 二值化
textxxx = image_to_string(img,lang='eng',config=tessdata_dir_config)
ocrResult = image_to_data(img,lang='eng',config=tessdata_dir_config)


#TODO  data_to_frame 建立表格，由于pass后面肯定紧跟是数字，其他杂项肯定在后面或表格界面外部
ocrStringIO = StringIO(ocrResult) #在内存中以 io 流的方式读写 str
# str转为dataframe数据
data = pd.read_csv(ocrStringIO,quoting=csv.QUOTE_NONE, encoding='utf-8',sep="\t")   # quoting=csv.QUOTE_NONE 禁止转义
text = data['text']
# 筛选列表元素并输出
# QQQ= [i for i,x in enumerate(text) if x == 'PASS' or x=='ERROR' ]

# 模式二：静态表
# feNum=[]# ERROR与PASS表
# for i in range(len(text)):
#     if text[i] =='PASS' or text[i] == 'ERROR':
#         feNum.append(text[i:i+3].tolist())


# 模式一：动态表
xxx = text.tolist().count('PASS')
numPASS,numERROR = 0 , 0
for i in range(len(text)):
    if text[i] == 'PASS' :
        numPASS +=1
    elif text[i] == 'ERROR':
        numERROR +=1


print(text.tolist())




# print(ocrResult)
# TODO 2 全局搜索pass与error并计数，根据y值区分不同的端口界面  ？？？pass是滚动的







